﻿#include <string>
#include <iostream>
#include "lineEndChanger.h"
#include "define.h"

using namespace std;

#ifdef MAIN_CLASS_MAIN
int main(int argc,char *args[]) {
#else
int main_ori(int argc,char *args[]){
#endif

#ifdef MACOS
	char dirBuff[1000];
	getcwd(dirBuff, 1000);
	cout << "当前目录：" << dirBuff << endl;
	//system("cd \"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"");
	//system("echo \"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"");
#elif defined(WINDOWS)
	char dirBuff[1000];
	_getcwd(dirBuff, 1000);
	cout << "当前目录：" << dirBuff << endl;
#endif
	lineEndChanger lecMain;
	while (lecMain.getStatus()!=lineEndChanger::STA_OVER) {
		lecMain.printInfo();
		switch (lecMain.getStatus()) {
		case lineEndChanger::STA_START:
			lecMain.clearErr();
			if(lecMain.lecStart(argc,args)){
				if(lecMain.isByCMD){
					lecMain.setStatus(lineEndChanger::STA_INIT);
				}else{
					lecMain.setStatus(lineEndChanger::STA_SELE);
				}
			}else{
				lecMain.setStatus(lineEndChanger::STA_ERR);
			}
			break;
		case lineEndChanger::STA_INIT:
			lecMain.clearErr();
			if(lecMain.lecInit()){
				lecMain.setStatus(lineEndChanger::STA_CONV);
			}else{
				lecMain.setStatus(lineEndChanger::STA_ERR);
			}
			break;
		case lineEndChanger::STA_SELE:
			lecMain.clearErr();
			if(lecMain.lecSelect()){
				lecMain.setStatus(lineEndChanger::STA_INIT);
			}else{
				lecMain.setStatus(lineEndChanger::STA_ERR);
			}
			break;
		case lineEndChanger::STA_CONV:
			lecMain.clearErr();
			if(lecMain.lecConvert()){
				lecMain.setStatus(lineEndChanger::STA_DONE);
			}else{
				lecMain.setStatus(lineEndChanger::STA_ERR);
			}
			break;
		case lineEndChanger::STA_ERR:
			if (lecMain.isByCMD == true) {
				lecMain.setStatus(lineEndChanger::STA_OVER);
			} else {
				lecMain.lecErrHandle();
			}
			break;
		case lineEndChanger::STA_DONE:
			if (lecMain.isByCMD == true) {
				lecMain.setStatus(lineEndChanger::STA_OVER);
			} else {
				if(lecMain.lecDone()){
					lecMain.setStatus(lineEndChanger::STA_SELE);
				}else{
					lecMain.setStatus(lineEndChanger::STA_OVER);
				}
			}
			break;
		case lineEndChanger::STA_QUIT:
			lecMain.setStatus(lineEndChanger::STA_OVER);
			break;
		default:
			lecMain.setStatus(lineEndChanger::STA_OVER);
			break;
		}

	}
	//lecMain.printInfo();
#ifdef WINDOWS
	system("pause");
#endif
	return 1;
}
